package com.jketing.spring.mvc.exception.handler.ams;

import org.springframework.web.bind.annotation.ControllerAdvice;
import org.springframework.web.bind.annotation.ExceptionHandler;
import org.springframework.web.servlet.ModelAndView;

/**
 * GlobalExceptionHandler 全局异常处理器
 * 
 * Spring-MVC 异常捕获方式
 * 1.在Controller中用@ExceptionHandler注解方法捕获异常,只在当前Controller中有效
 * 2.使用@ControllerAdvice注解全局异常捕获类，再在类中用@ExceptionHandler注解方法捕获异常,全局有效
 * 3.使用SimpleMappingExceptionResolver在Spring-MVC配置文件中来映射异常捕获,全局有效
 * 
 * @author  李荣华
 * @version v1.0
 * @date    2018-01-02
 * @since   Spring-mvc 4.3.8
 */
@ControllerAdvice
public class GlobalExceptionHandler {

	/**
	 *  handleArithmeticException 异常捕获方法 	
	 *  
	 *  Exception 有注解设置要捕获的异常
	 * 	 
	 *  @param 	Exception e 捕获的异常作为入参
	 *  
	 *  @return ModelAndView 必顺返回ModelAndView才能将异常带到jsp页面
	 */
	@ExceptionHandler({ArithmeticException.class})
	public ModelAndView handleArithmeticException(Exception e){
		System.out.println("----> 出异常了: " + e);
		ModelAndView mv = new ModelAndView("exception");
		mv.addObject("exception", e);//必顺使用ModelAndView才能将异常返回页面，map不行
		return mv;
	}
}
